# -*- coding:utf-8 -*-
# 元组

# 1、定义元组
# 定义元组使⽤⼩括号，且逗号隔开各个数据，数据可以是不同的数据类型
# tu1 = (1, 2, "bb", 4, 2.5)
# print(type(tu1))
# print(tu1)

# 注意：如果定义的元组只有⼀个数据，那么这个数据后⾯也要添加逗号，否则数据类型为唯⼀的这个数据的数据类型
# tu2 = (1,)
# tu3 = (1)
# print(type(tu2))    # <class 'tuple'>
# print(type(tu3))    # <class 'int'>


# 2、常见的操作
# 元组数据不⽀持修改，只⽀持查找
# 根据下标查找

# index()
# 查找某个数据，如果数据存在返回对应的下标，否则报错，语法和列表、与字符串的index⽅法相同。
# tu1 = (1, 2, 3, "bb", 4, 2.5, 3)
# print(tu1[2])
# print(tu1.index(2))
#

# # count()
# # 统计某个数据在当前元组出现的次数。
# tu1 = (1, 2, 3, "bb", 4, 2.5, 3)
# print(tu1.count("bb"))
# print(tu1.count(3))
#
# # len()
# # 统计元组中数据的个数
# tu1 = (1, 2, 3, "bb", 4, 2.5, 3)
# print(len(tu1))

# 元组内的直接数据如果修改则⽴即报错
# 如果非要修改元组中的元素，可以将元组转化为列表，修改后转化为元组
# tu1 = (1, "aa", 3.5, "abc")
# li1 = list(tu1)    # 转化为列表
# li1[1] = "bbq"     # 修改内容
# tu1 = tuple(li1)   # 转化为元组
# print(tu1)


# 如果元组⾥⾯有列表，修改列表⾥⾯的数据则是⽀持的
tuple2 = (10, 20, ['aa', 'bb', 'cc'], 50, 30)
print(tuple2[2])  # 访问到列表
# ['aa', 'bb', 'cc']
tuple2[2][0] = "aaaaa"
print(tuple2)    # (10, 20, ['aaaaa', 'bb', 'cc'], 50, 30)
